package top.jlzhou.boot.tools.autoconfigure;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import top.jlzhou.Path;

/**
 * <pre>
 * 如果未自己创建Path的bean，则自动创建
 * ClassName : top.jlzhou.boot.tools.autoconfigure.PathAutoConfiguration
 * Author : J.L.Zhou
 * Date : 2019年3月12日 上午11:26:46
 * Version : V1.0
 * Copyright 2019 jlzhou.top Inc. All rights reserved. 
 * 注意：本内容仅限于公司内部传阅，禁止外泄以及用于其他的商业目</pre>
 */
@Configuration
@EnableConfigurationProperties(PathProperties.class)
@ConditionalOnClass(Path.class)//当类路径存在这个类时才会加载这个配置类，否则跳过,这个很有用比如不同jar包间类依赖，依赖的类不存在直接跳过，不会报错
public class PathAutoConfiguration {
	
	@Autowired
	private PathProperties properties;
	
	@Bean
    @ConditionalOnMissingBean(Path.class)//这个配置就是SpringBoot可以优先使用自定义Bean的核心所在，如果没有我们的自定义Bean那么才会自动配置一个新的Bean
    public Path path(){
        Path path = new Path(properties);
        path.init();
        return path;
    }
}
